home *** CD-ROM | disk | FTP | other *** search
/ NetNews Offline 2 / NetNews Offline Volume 2.iso / news / comp / lang / c-part1 / 6011 < prev    next >
Encoding:
Text File  |  1996-08-05  |  2.0 KB  |  55 lines

  1. Path: gail.ripco.com!mambuhl
  2. From: mambuhl@ripco.com (Martin Ambuhl)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: What`s better & why
  5. Date: 22 Feb 1996 06:33:32 GMT
  6. Organization: Ripco Communications, Inc.
  7. Message-ID: <4gh2ns$cmu@gail.ripco.com>
  8. NNTP-Posting-Host: foley.ripco.com
  9.  
  10. Scott Hawley <shawley@connix.com>
  11. in <31297C5A.E6C@connix.com> asks:
  12.  
  13. >I was just curious what you all though about the following code.
  14. >Please tell me what is better (faster/Smaller) and why. Or does it make
  15. >any difference at all. I just though about this while I was programming
  16. >today?
  17.  
  18. >example 1:
  19. >                val = 1;
  20. >                if( what ever...)val = 0;
  21.  
  22. >or
  23. >example 2:
  24. >                if( what ever... )val = 0;
  25. >                else val = 1;
  26.  
  27. It all depends on your compiler.  With mine, there's no difference.
  28. Below notice the side-by-side comparison of three functions and the
  29. code the compiler generates:
  30.  
  31. int func1(int x)    | int func2(int x)    |  int func3(int x)
  32. {                   | {                   |  {
  33.     int val;        |     int val;        |      int val;
  34.     val = 1;        |     if (x > 0)      |      val = x <= 0;
  35.     if (x > 0)      |         val = 0;    |      return val;
  36.         val = 0;    |     else            |  }
  37.     return val;     |         val = 1;    |
  38.                     | }                   |
  39.  
  40. .globl _func1       | .globl _func2       |   .globl _func3
  41. _func1:             | _func2:             |   _func3:
  42.     pushl %ebp      |     pushl %ebp      |       pushl %ebp
  43.     movl %esp,%ebp  |     movl %esp,%ebp  |       movl %esp,%ebp
  44.     cmpl $0,8(%ebp) |     cmpl $0,8(%ebp) |       cmpl $0,8(%ebp)
  45.     setle %al       |     setle %al       |       setle %al
  46.     andl $255,%eax  |     andl $255,%eax  |       andl $255,%eax
  47.     leave           |     leave           |       leave
  48.     ret             |     ret             |       ret
  49.                     |                     |
  50.  
  51.                     
  52. --
  53. * Martin Ambuhl       net: mambuhl@ripco.com
  54. * Chicago, IL (USA)    
  55.